package org.biodas.jdas.client;

import org.biodas.jdas.client.adapters.features.DasGFFAdapter;
import org.biodas.jdas.exceptions.DASClientException;

import javax.xml.bind.JAXBException;
import java.net.MalformedURLException;
import java.util.List;

public interface FeaturesClientInterface {

	public abstract DasGFFAdapter fetchData(String serverURL,
			List<String> segments) throws DASClientException;

	public abstract DasGFFAdapter fetchDataWithTypes(String serverURL,
			List<String> segments, List<String> types)
			throws DASClientException;

	public abstract DasGFFAdapter fetchDataWithFeatueIds(String serverURL,
			List<String> segments, List<String> featureIds)
			 throws DASClientException;

	/**
	 * Retrieves the features response, arguments allowed (at least one fo segment or feature_id should be provided).
	 * @param serverURL
	 * @param segments
	 * @param types
	 * @return
	 * @throws MalformedURLException
	 * @throws JAXBException
	 */
	public abstract DasGFFAdapter fetchData(String serverURL,
			List<String> segments, List<String> types, List<String> categories,
			String categorize, List<String> featureIds, String maxbins)
			throws DASClientException;
	
	public abstract  DasGFFAdapter postFeatures(String url, DasGFFAdapter dasgff, String user, String pass) throws DASClientException;

}